#include <iostream>
#include <string>
#include "structures.h"
#include "ConstrArbre2.h"
#include "ArbrCar.h"

void Navig(dico2* racine)
{
	int choix=-1;dico2 *noeud=racine;
	if(noeud==NULL)
		printf("\n\nerreur de pointeur\n\n");
	while(choix!=-2)
	{
		printf("Ou voulez vous aller ?\n");
		scanf("%d",&choix);getchar();getchar();
		if(choix==0)
		{
			
			if((*noeud).fils[choix]!=NULL)
			{
				printf("Error 432\n");getchar();getchar();
				noeud=(*noeud).fils[choix];
				printf("Les caracteristiques du noeuds sont : ( %d , %d )\n et debutRacine vaut %d \n",(*noeud).debut, (*noeud).taille,(*noeud).DebutRacine);
			}
			else
			{
				printf("Le pointeur est nul\n");getchar();getchar();
			}
		}
		else if(choix==1)
		{
			if((*noeud).fils[choix]!=NULL)
			{
				noeud=(*noeud).fils[choix];
				printf("Les caracteristiques du noeuds sont : ( %d , %d )",(*noeud).debut, (*noeud).taille);
			}
			else
			{
				printf("Le pointeur est nul\n");
			}
		}
		else 
		if(choix==2)
		{
			if((*noeud).fils[choix]!=NULL)
			{
				noeud=(*noeud).fils[choix];
				printf("Les caracteristiques du noeuds sont : ( %d , %d )",(*noeud).debut, (*noeud).taille);
			}
			else
			{
				printf("Le pointeur est nul\n");
			}
		}
		else if(choix==3)
		{
			if((*noeud).fils[choix]!=NULL)
			{
				noeud=(*noeud).fils[choix];
				printf("Les caracteristiques du noeuds sont : ( %d , %d )",(*noeud).debut, (*noeud).taille);
			}
			else
			{
				printf("Le pointeur est nul\n");
			}
		}
		else if(choix==4)
		{
			if((*noeud).fils[choix]!=NULL)
			{
				noeud=(*noeud).fils[choix];
				printf("Les caracteristiques du noeuds sont : ( %d , %d )",(*noeud).debut, (*noeud).taille);
			}
			else
			{
				printf("Le pointeur est nul\n");
			}
		}
		else if(choix==5)
		{
			if((*noeud).fils[choix]!=NULL)
			{
				noeud=(*noeud).fils[choix];
				printf("Les caracteristiques du noeuds sont : ( %d , %d )",(*noeud).debut, (*noeud).taille);
			}
			else
			{
				printf("Le pointeur est nul\n");
			}
		}
		else if (choix ==10)
		 noeud=racine;
}
}

void caracteri(dico2* racine)
{
	system("clear");
	printf("\n\nL'arbre possede %d noeuds et sa longueur est de %d\n",NbNoeud(racine),Longueur(racine));
	getchar();getchar();
}
int NbNoeud(dico2* racine)
{
	
	int a= 0;
/*A chaque noeud on rajoute +1 afin de tous les compter. le parcour se fait dans le sens prefixe*/	
	for(int i=0;i<5;i++)
	{
	if((*racine).fils[i]!=NULL)
	{
		a=NbNoeud((*racine).fils[i])+a;
	}
	}
	return a+1;
	
}
int Longueur(dico2* racine)
{
	int a= 0;
/*A On compte la longueur maximum*/	
	for(int i=0;i<5;i++)
	{
	if((*racine).fils[i]!=NULL)
	{
		a=maximum(Longueur((*racine).fils[i]),a);//a chaque noeud on garde la branche qui possede le plus de noeud
	}
	}
	return a+1;

}
int maximum(int a, int b)
{
	if( a>b )
		return a;
	else
		return b;//renvoi le max de deux nombres
}
